package it.polimi.TravelDreamEAR.ejb.entities;

import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.*;

import java.io.Serializable;

import javax.persistence.*;

import org.apache.commons.codec.digest.DigestUtils;

import java.util.List;


/**
 * The persistent class for the impiegato database table.
 * 
 */
@Entity
@NamedQuery(name="Impiegato.findAll", query="SELECT i FROM Impiegato i")
public class Impiegato implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	private String username;

	private String citta;

	private String cognome;

	private String email;

	private String nome;

	private String password;

	private String telefono;

	//bi-directional many-to-one association to Amministratore
	@ManyToOne
	@JoinColumn(name="CREATO_DA")
	private Amministratore amministratore;

	//bi-directional many-to-one association to Pacchetto
	@OneToMany(mappedBy="impiegatoBean")
	private List<Pacchetto> pacchettos;

	//bi-directional many-to-one association to PacchettoImpiegato
	@OneToMany(mappedBy="impiegatoBean")
	private List<PacchettoImpiegato> pacchettoImpiegatos;

	public Impiegato() {
	}
	
	public Impiegato(ImpiegatoDTO impiegatoDTO) {
		this.username=impiegatoDTO.getUsername();
		this.citta=impiegatoDTO.getCitta();
		this.cognome=impiegatoDTO.getCognome();
		this.nome=impiegatoDTO.getNome();
		this.email=impiegatoDTO.getEmail();
		this.password=DigestUtils.sha256Hex(impiegatoDTO.getPassword());
		this.telefono=impiegatoDTO.getTelefono();
	}

	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getCitta() {
		return this.citta;
	}

	public void setCitta(String citta) {
		this.citta = citta;
	}

	public String getCognome() {
		return this.cognome;
	}

	public void setCognome(String cognome) {
		this.cognome = cognome;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getTelefono() {
		return this.telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public Amministratore getAmministratore() {
		return this.amministratore;
	}

	public void setAmministratore(Amministratore amministratore) {
		this.amministratore = amministratore;
	}

	public List<Pacchetto> getPacchettos() {
		return this.pacchettos;
	}

	public void setPacchettos(List<Pacchetto> pacchettos) {
		this.pacchettos = pacchettos;
	}

	public Pacchetto addPacchetto(Pacchetto pacchetto) {
		getPacchettos().add(pacchetto);
		pacchetto.setImpiegatoBean(this);

		return pacchetto;
	}

	public Pacchetto removePacchetto(Pacchetto pacchetto) {
		getPacchettos().remove(pacchetto);
		pacchetto.setImpiegatoBean(null);

		return pacchetto;
	}

	public List<PacchettoImpiegato> getPacchettoImpiegatos() {
		return this.pacchettoImpiegatos;
	}

	public void setPacchettoImpiegatos(List<PacchettoImpiegato> pacchettoImpiegatos) {
		this.pacchettoImpiegatos = pacchettoImpiegatos;
	}

	public PacchettoImpiegato addPacchettoImpiegato(PacchettoImpiegato pacchettoImpiegato) {
		getPacchettoImpiegatos().add(pacchettoImpiegato);
		pacchettoImpiegato.setImpiegatoBean(this);

		return pacchettoImpiegato;
	}

	public PacchettoImpiegato removePacchettoImpiegato(PacchettoImpiegato pacchettoImpiegato) {
		getPacchettoImpiegatos().remove(pacchettoImpiegato);
		pacchettoImpiegato.setImpiegatoBean(null);

		return pacchettoImpiegato;
	}

}